package hoja4;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class usandoHoffman {
	
	static Arbol<Character> valores;
	
	static Scanner scn = new Scanner(System.in);
	
	static int option = 0;

	public static void main(String[] args){
		
		do{
			
			System.out.println("Arboles de Huffman\n\n1. Crear un arbol\n2. Salir\n");
			
			option = scn.nextInt();
			
			switch(option){
			
			case 1:
				make();
				break;
				
			case 2:
				break;
				
			default:
				System.out.println("Opcion inexistente\n");
			}
			
		}while(option!=2);
	}
	
	public static void make(){
		
		System.out.println("Ingrese una secuencia de caracteres a-d");
		
		String cache = scn.next();
		
		vect[] letra = new vect[4];
		
		int[] letras = new int[4];
		
		for(int veces=0; veces<letras.length; veces++)
			letras[veces]=0;
		
		for(int veces=0; veces<cache.length(); veces++){
			
			char tmp = cache.charAt(veces);
			
			switch(tmp){
			
			case 'a':
				letras[0]++;
				break;
			case 'b':
				letras[1]++;
				break;
			case 'c':
				letras[2]++;
				break;
			case 'd':
				letras[3]++;
				break;
			}
		}
			for(int veces=0; veces<letras.length; veces++)
				letra[veces]= new vect(letras[veces], (char)('a'+veces));
			
			Arrays.sort(letra);
			
			char[] letra1 = new char[letra.length];
			
			for(int veces=0; veces<letra1.length; veces++)
				letra1[veces]=letra[veces].letra;
			
			//valores = makeTree(valores, letra1);
			
			System.out.println("---------------------------------\n" +
					"Letra\tFrecuencia\tCodigo\n---------------------------------");
			
			System.out.println(letra[3].letra+"\t"+letra[3].num+"\t\t0");
			System.out.println(letra[2].letra+"\t"+letra[2].num+"\t\t10");
			System.out.println(letra[1].letra+"\t"+letra[1].num+"\t\t110");
			System.out.println(letra[0].letra+"\t"+letra[0].num+"\t\t111");
	}
	
	public static Arbol<Character> makeTree(Arbol<Character> obj1, char[] objs){
		
		Arbol<Character> obj = obj1;
		//char tmp = objs[1];
		if(objs.length==2){
			
			obj.setDer(new ImpleArbol<Character>(objs[objs.length-1]));
			obj.setIzq(new ImpleArbol<Character>(objs[objs.length-2]));
			return obj;
		}
		
		obj.setIzq(new ImpleArbol<Character>(objs[objs.length-1]));
		
		char[] cache = new char[objs.length-1];
		
		for(int veces=0; veces<cache.length; veces++)
			cache[veces]=objs[veces];
		
		obj.setDer(makeTree(new ImpleArbol<Character>(), cache));
		
		return obj;
		
	}
}
